#include <stdbool.h>
bool canFormArray(int *arr, int arrSize, int **pieces, int piecesSize, int *piecesColSize)
{
    int i = 0, j = 0, k = 0;
    while (i < arrSize)
    { // 遍历arr
        for (j = 0; j < piecesSize; j++)
        { // 搜索pieces
            if (arr[i] == pieces[j][0])
            {                                                           // 如果找到第一个相同的元素
                for (k = 0; k < piecesColSize[j]; k++)                  // 开始段匹配
                    if (i + k >= arrSize || arr[i + k] != pieces[j][k]) // 如果arr先于pieces匹配完或者两者的数值不相同则直接返回false
                        return false;
                break; // 由于保证不会存在相同的元素，所以后续的不需要再遍历
            }
        }
        if (j >= piecesSize) // 如果遍历整个pieces都没有找到相同的第一个元素，说明当前arr的元素是某一个数组的后续元素，也不符合要求，返回false
            return false;
        else
            i += piecesColSize[j]; // 段落匹配后i要增加相应的个数，不能只是i++
    }
    return true;
}
